package tp.tecnicasdisenio.model.factory;

import tp.tecnicasdisenio.dao.impl.jdbc.AlumnoDao;
import tp.tecnicasdisenio.dao.impl.jdbc.ConsultaDao;
import tp.tecnicasdisenio.dao.impl.jdbc.MateriaDao;
import tp.tecnicasdisenio.dao.impl.jdbc.TicketDao;
import tp.tecnicasdisenio.model.ReglaInterface;
import tp.tecnicasdisenio.model.accion.AccionCrearConsultaPublica;
import tp.tecnicasdisenio.model.accion.AccionCrearTicket;
import tp.tecnicasdisenio.model.accion.AccionReenviarConsultaPublica;
import tp.tecnicasdisenio.model.parser.ParserTituloConsultaTemaPublica;
import tp.tecnicasdisenio.model.regla.ReglaConsultaTemaPublica;

public class ReglaConsultaTemaPublicaFactory implements ReglaFactoryInterface {

public static ReglaConsultaTemaPublicaFactory instance;
	
	private ReglaConsultaTemaPublicaFactory(){
	}
	
	public static synchronized ReglaConsultaTemaPublicaFactory getInstance(){
		if(instance == null){
			instance= new ReglaConsultaTemaPublicaFactory();
		}
		return instance;
	}
	
	@Override
	public ReglaInterface crear() {
		AccionCrearConsultaPublica accionCrearConsulta = new AccionCrearConsultaPublica();
		accionCrearConsulta.setAlumnoDao(AlumnoDao.getInstance());
		accionCrearConsulta.setConsultaDao(ConsultaDao.getInstance());
		accionCrearConsulta.setParser(new ParserTituloConsultaTemaPublica());
		
		AccionCrearTicket accionCrearTicket = new AccionCrearTicket();
		accionCrearTicket.setAlumnoDao(AlumnoDao.getInstance());
		accionCrearTicket.setTicketDao(TicketDao.getInstance());
		accionCrearTicket.setMateriaDao(MateriaDao.getInstance());
		accionCrearTicket.setConsultaDao(ConsultaDao.getInstance());
		accionCrearTicket.setParser(new ParserTituloConsultaTemaPublica());
		
		AccionReenviarConsultaPublica accionReenviarConsulta = new AccionReenviarConsultaPublica();
		//accionReenviarConsulta.setAlumnoDao(AlumnoDao.getInstance());
		accionReenviarConsulta.setMateriaDao(MateriaDao.getInstance());
		//accionReenviarConsulta.setParser(new ParserTituloConsultaTemaPublica());
		
		ReglaConsultaTemaPublica reglaConsultaTema = new ReglaConsultaTemaPublica();
		reglaConsultaTema.nuevaAccion(accionCrearConsulta);
		reglaConsultaTema.nuevaAccion(accionCrearTicket);
		reglaConsultaTema.nuevaAccion(accionReenviarConsulta);
		reglaConsultaTema.setParserTitulo(new ParserTituloConsultaTemaPublica());
		
		return reglaConsultaTema;
	}

}
